package com.ruoyi.disk.service;

import com.ruoyi.disk.domain.SysBackup;
import com.ruoyi.disk.domain.dto.RestoreDTO;
import com.ruoyi.disk.domain.vo.BackupFileVO;
import com.ruoyi.disk.domain.vo.BackupVO;
import com.ruoyi.disk.domain.vo.RestoreResultVO;
import java.util.List;

/**
 * 备份服务接口
 */
public interface ISysBackupService {
    /**
     * 创建用户磁盘备份
     * 
     * @param userId 用户ID
     * @return 备份信息
     */
    public BackupVO createBackup(Long userId);
    
    /**
     * 获取用户的备份列表
     * 
     * @param userId 用户ID
     * @return 备份列表
     */
    public List<BackupVO> listUserBackups(Long userId);
    
    /**
     * 获取备份文件列表
     * 
     * @param userId 用户ID
     * @param backupId 备份ID
     * @return 备份文件列表
     */
    public List<BackupFileVO> listBackupFiles(Long userId, String backupId);
    
    /**
     * 从备份恢复文件
     * 
     * @param restoreDTO 恢复请求
     * @return 恢复结果
     */
    public RestoreResultVO restoreFiles(RestoreDTO restoreDTO);
    
    /**
     * 查询备份列表
     * 
     * @param sysBackup 备份
     * @return 备份集合
     */
    public List<SysBackup> selectSysBackupList(SysBackup sysBackup);

    /**
     * 查询备份详细信息
     * 
     * @param backupId 备份ID
     * @return 备份
     */
    public SysBackup selectSysBackupById(String backupId);

    /**
     * 新增备份
     * 
     * @param sysBackup 备份
     * @return 结果
     */
    public int insertSysBackup(SysBackup sysBackup);

    /**
     * 修改备份
     * 
     * @param sysBackup 备份
     * @return 结果
     */
    public int updateSysBackup(SysBackup sysBackup);

    /**
     * 删除备份
     * 
     * @param backupId 备份ID
     * @return 结果
     */
    public int deleteSysBackupById(String backupId);

    /**
     * 批量删除备份
     * 
     * @param backupIds 需要删除的备份ID
     * @return 结果
     */
    public int deleteSysBackupByIds(String[] backupIds);
} 